package ycl.message.service;

import ycl.common.models.req.maps.Location;
import ycl.common.models.req.maps.req.ExploreReq;
import ycl.common.models.req.maps.req.PlaceSearchReq;
import ycl.common.models.req.maps.req.SuggestionReq;
import ycl.common.models.req.maps.res.*;

import java.util.List;

/**
 * 腾讯地图定位
 *
 * @author ycl
 * @date 2022/6/18 0018 16:19:09
 */
public interface GpsService {


	/**
	 * 地点搜索
	 *
	 * @param req 搜索请求参数
	 */
	BaseGpsQueryRes<PlaceSearchRes> getPlaceSearch(PlaceSearchReq req);

	/**
	 * 周边搜索
	 *
	 * @param req 搜索请求参数
	 */
	BaseGpsQueryRes<PlaceSearchRes> getExplore(ExploreReq req);

	/**
	 * 根据id搜索
	 * @param id id
	 * @return 地点搜索
	 */
	BaseGpsQueryRes<PlaceSearchRes> getDetail(String id);

	/**
	 * 关键词搜索
	 *
	 * @param req 搜索请求参数
	 */
	BaseGpsQueryRes<SuggestionRes> getSuggestion(SuggestionReq req);

	/**
	 * 地址解析
	 *
	 * @param address 地址
	 */
	BaseGpsQueryRes<AddressResolveRes> addressResolve(String address);

	/**
	 * 逆地址解析
	 *
	 * @param location 经纬度
	 */
	BaseGpsQueryRes<LocationResolveRes> getLocationResolve(Location location);

	/**
	 * 获取所有行政区划
	 * @return 区划对象
	 */
	BaseGpsQueryRes<List<List<DistrictRes>>> districtList();

	/**
	 * 获取省级行政区划
	 * @return 区划对象
	 */
	List<DistrictRes> districtListProvince();

	/**
	 * 获取市级行政区划
	 * @return 区划对象
	 */
	List<DistrictRes> districtListCity();

	/**
	 * 获取区级行政区划
	 * @return 区划对象
	 */
	List<DistrictRes> districtListArea();

//	/**
//	 * 重设我的数据库的行政地区信息
//	 */
//	void resetMysqlDistrict();
}
